/**
 * @version 3.0.3
 * @Author lu-ch
 * @Email webwork.s@qq.com
 * 文档: https://quanzhan.co/luch-request/
 * github: https://github.com/lei-mu/luch-request
 * DCloud: http://ext.dcloud.net.cn/plugin?id=392
 * HBuilderX: 2.7.9
 */
import Request from '@/js_sdk/luch-request/luch-request/index.js'


const getTokenStorage = () => {
	let token = ''
	try {
		token = uni.getStorageSync('token')
	} catch (e) {
		//TODO handle the exception
	}
	return token
}
const getUserId = () => {
	let userId = -1
	try {
		let userInfo = uni.getStorageSync('userInfo')
		userId = userInfo.id
	} catch (e) {
		console.error('get user info Error' + e)
	}
	return userId
}
const test = new Request()
/**
 * 修改全局配置示例
 const test = new Request({
	header: {a:1}, // 举例
	baseURL: 'https://www.fastmock.site/mock/26243bdf9062eeae2848fc67603bda2d/luchrequest',
	validateStatus: (statusCode) => { // statusCode 必存在。此处示例为全局默认配置
		return statusCode >= 200 && statusCode < 300
	}
})
 test.config.baseURL = 'https://www.fastmock.site/mock/26243bdf9062eeae2848fc67603bda2d/luchrequest'
 **/

test.setConfig((config) => { /* 设置全局配置 */
	// 服务地址
	config.baseURL = 'https://www.fastmock.site/mock/a98b2d9a6761bc5849deb2cc78803c01/eshop'
	config.header = {
		...config.header,
		a: 1, // 演示
		b: 2 // 演示
	}
	return config
})

test.interceptors.request.use((config) => { /* 请求之前拦截器。可以使用async await 做异步操作  */
	config.header = {
		...config.header,
		a: 3 // 演示
	}
	/*
	if (!token) { // 如果token不存在，return Promise.reject(config) 会取消本次请求
	  return Promise.reject(config)
	}
	*/
	console.log('test 请求发起之前，如果需要鉴权等业务操作，可以在这里处理')
	return config
}, (config) => {
	return Promise.reject(config)
})


test.interceptors.response.use((response) => { /* 请求之后拦截器。可以使用async await 做异步操作  */
	if (response.data.code !== 200) { // 服务端返回的状态码不等于200，则reject()
		return Promise.reject(response)
	}
	console.log('test 请求之后,返回数据的拦截器')
	return response
}, (response) => { // 请求错误做点什么。可以使用async await 做异步操作
	return Promise.reject(response)
})


const http = new Request()

http.setConfig((config) => { /* 设置全局配置 */
	// 服务地址
	config.baseURL = 'https://www.fastmock.site/mock/a98b2d9a6761bc5849deb2cc78803c01/eshop'
	config.header = {
		...config.header,
		// t: 3, // 演示
		// x: 9 // 演示
	}
	return config
})


http.interceptors.request.use((config) => { /* 请求之前拦截器。可以使用async await 做异步操作 */
	config.header = {
		...config.header,
		token: getTokenStorage()
	}
	/*
	 if (!token) { // 如果token不存在，return Promise.reject(config) 会取消本次请求
	   return Promise.reject(config)
	 }
	*/
	 


	return config
}, (config) => {
	return Promise.reject(config)
})

// 必须使用异步函数，注意
http.interceptors.response.use(async (response) => { /* 请求之后拦截器。可以使用async await 做异步操作  */
	// if (response.data.code !== 200) { // 服务端返回的状态码不等于200，则reject()
	//   return Promise.reject(response)
	// }
	return response
}, (response) => { // 请求错误做点什么。可以使用async await 做异步操作
	console.log(response)
	return Promise.reject(response)
})

// 可以自定义局部变量，在自定义变量里面增加拦截业务处理，如日志 权限 通知等
export {
	http,
	test
}
